﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;

/// <summary>
/// Descripción breve de Empleado
/// </summary>
public class Empleado : Persona
{
	String estado;
	public Empleado()
	{
		
	}

    /**
    * Inserta un empleado nuevo en la base de datos   
    */

    public override void Guardar()
    {
        AbrirConexion();
        IniciarTransaccion();
        try
        {

            GuardarSinTransaccion(); //para que todo se incluya en la transaccion actual            
            SentenciaSQL = "insert into empleado (id_empleado, estado)values(" + Id + ",'" + Estado + "');";
            
            EjecutarComando();
            ConfirmarTransaccion();
        }
        catch (ConexionException ex)
        {
            CancelarTransaccion();
            throw new ConexionException("ocurrio un error al registrar el empleado", ex);
        }
        finally
        {
            CerrarConexion();
        }

    }

    public void Actualizar()
    {
        AbrirConexion();
        IniciarTransaccion();
        try
        {
            ActualizarSinTransaccion();
            SentenciaSQL = "update empleado set estado = '" + Estado + "' where id_empleado = " + Id + ";";
            EjecutarComando();
            ConfirmarTransaccion();
        }
        catch (ConexionException ex)
        {
            CancelarTransaccion();
            throw new ConexionException("ocurrio un error al intentar modificiar el empleado", ex);
        }
        finally
        {
            CerrarConexion();
        }

    }

    /**
    * Borra un Empleado
    * Cambia el estado del Empleado a 'b' -> borrado
    */
    public void Borrar()
    {
        SentenciaSQL = "update empleado set estado = 'b' where id_empleado = " + Id + " ;";

        AbrirConexion();
        IniciarTransaccion();
        try
        {
            EjecutarComando();
            ConfirmarTransaccion();
        }
        catch (Exception ex)
        {
            CancelarTransaccion();
            throw new ConexionException("no se pudo eliminar el empleado", ex);
        }
        finally
        {
            CerrarConexion();
        }
    }

    /**
    * Busca los clientes que coinciden con los parametros de busqueda
    * @param nombre nombre del empleado
    * @param apellido apellido del empleado
    * @param nroDocumento numero de documento del empleado
    * @returm dataset con el resultado de la busqueda
    */
    public DataSet Buscar(String nombre, String apellido, String nroDocumento)
    {
        DataSet ds = new DataSet();

        SentenciaSQL = "select * from empleado, persona where estado <> 'b' and nombre like '%" + nombre + "%' and id_persona = id_empleado and apellido like '%" + apellido + "%' and nro_documento like '%" + nroDocumento + "%'";
        AbrirConexion();
        IniciarTransaccion();
        try
        {
            ds = EjecutarComandoDataSet();
            ConfirmarTransaccion();
        }
        catch (Exception ex)
        {
            CancelarTransaccion();
            throw new ConexionException("no se pudieron obtener los datos del empleado", ex);
        }
        finally
        {
            CerrarConexion();
        }

        return ds;

    }


    public String Estado {
        get { return this.estado; }
        set { estado = value; }
    }
}
